package jiaoheng.数据结构;

import org.junit.Test;

/**
 // 创建一个长度为5的整数数组
 int[] numbers = new int[5];

 // 方式1：完整语法
 int[] numbers = new int[]{1, 2, 3, 4, 5};

 // 方式2：简化语法（最常用）
 int[] numbers = {1, 2, 3, 4, 5}; // 数组大小为5


 */
public class s1数组 {
    @Test
    public void testMoveZeroes(){
        MyArray.init();
        MyArray.print();
        MyArray.moveZeroes();
        MyArray.print();

        MyArray.init();
        MyArray.print();

        MyArray.moveZeroes2();
        MyArray.print();

    }

}
class MyArray{
    static int[] nums = {};

    public static void init(){
        nums = new int[]{0, 1, 0, 3, 12};
    }

    public static void print(){
        for (int num : nums){
            System.out.print(num+" ");
        }
        System.out.println();
    }

    // 遇到0，就把0从这里开始一直移动到最后
    public static void moveZeroes(){
        for(int i=0;i<nums.length-1;i++){
            if(nums[i]==0){
                for(int j=i;j<nums.length-1;j++){
                    nums[j]=nums[j+1];
                    nums[j+1]=0;
                }
            }
        }
    }
    //把非0值 把非0值放到开头，其他的用0填充
    public static void moveZeroes2(){
        int noZeroesIndex = 0;
        for(int i=0;i<nums.length;i++){
            if(nums[i]!=0){
                nums[noZeroesIndex] = nums[i];
                noZeroesIndex++;
            }
        }
        for(int i=noZeroesIndex;i<nums.length;i++){
            nums[i]=0;
        }
    }
}
